package easy;

import java.util.HashMap;
import java.util.Stack;

public class T20 {
    public static void main(String[] args) {
        System.out.println(isValid("([])"));
    }
    public static boolean isValid(String s) {
        HashMap<Character, Integer> map = new HashMap<>();
        map.put('(',1);
        map.put(')',-1);
        map.put('{',2);
        map.put('}',-2);
        map.put('[',3);
        map.put(']',-3);
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (stack.isEmpty()){
                if (map.get(c)<0){
                    return false;
                }
                stack.push(c);
            }else {
                if (map.get(c)+map.get(stack.peek())==0){
                    stack.pop();
                    continue;
                }else {
                    if (map.get(c)>0){
                        stack.push(c);
                        continue;
                    }else {
                        return false;
                    }
                }
            }
        }
        if (stack.isEmpty()){
            return true;
        }else {
            return false;
        }
    }
}
